/*
 * Flowable CMMN REST API
 * # flowable / flowəb(ə)l /    - a compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users.  - a lightning fast, tried and tested BPMN 2 process engine written in Java. It is Apache 2.0 licensed open source, with a committed community.  - can run embedded in a Java application, or as a service on a server, a cluster, and in the cloud. It integrates perfectly with Spring. With a rich Java and REST API, it is the ideal engine for orchestrating human or system activities.
 *
 * OpenAPI spec version: v1
 *
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */


package com.ibm.risk.irmp.workflow.client.flowable.model;

import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import java.time.OffsetDateTime;

/**
 * HistoricPlanItemInstanceResponse
 */

public class HistoricPlanItemInstanceResponse {
  @JsonProperty("id")
  private String id = null;

  @JsonProperty("name")
  private String name = null;

  @JsonProperty("state")
  private String state = null;

  @JsonProperty("caseDefinitionId")
  private String caseDefinitionId = null;

  @JsonProperty("derivedCaseDefinitionId")
  private String derivedCaseDefinitionId = null;

  @JsonProperty("caseInstanceId")
  private String caseInstanceId = null;

  @JsonProperty("stageInstanceId")
  private String stageInstanceId = null;

  @JsonProperty("stage")
  private Boolean stage = null;

  @JsonProperty("elementId")
  private String elementId = null;

  @JsonProperty("planItemDefinitionId")
  private String planItemDefinitionId = null;

  @JsonProperty("planItemDefinitionType")
  private String planItemDefinitionType = null;

  @JsonProperty("createTime")
  private OffsetDateTime createTime = null;

  @JsonProperty("lastAvailableTime")
  private OffsetDateTime lastAvailableTime = null;

  @JsonProperty("lastEnabledTime")
  private OffsetDateTime lastEnabledTime = null;

  @JsonProperty("lastDisabledTime")
  private OffsetDateTime lastDisabledTime = null;

  @JsonProperty("lastStartedTime")
  private OffsetDateTime lastStartedTime = null;

  @JsonProperty("lastSuspendedTime")
  private OffsetDateTime lastSuspendedTime = null;

  @JsonProperty("completedTime")
  private OffsetDateTime completedTime = null;

  @JsonProperty("occurredTime")
  private OffsetDateTime occurredTime = null;

  @JsonProperty("terminatedTime")
  private OffsetDateTime terminatedTime = null;

  @JsonProperty("exitTime")
  private OffsetDateTime exitTime = null;

  @JsonProperty("endedTime")
  private OffsetDateTime endedTime = null;

  @JsonProperty("lastUpdatedTime")
  private OffsetDateTime lastUpdatedTime = null;

  @JsonProperty("startUserId")
  private String startUserId = null;

  @JsonProperty("referenceId")
  private String referenceId = null;

  @JsonProperty("referenceType")
  private String referenceType = null;

  @JsonProperty("entryCriterionId")
  private String entryCriterionId = null;

  @JsonProperty("exitCriterionId")
  private String exitCriterionId = null;

  @JsonProperty("formKey")
  private String formKey = null;

  @JsonProperty("extraValue")
  private String extraValue = null;

  @JsonProperty("showInOverview")
  private Boolean showInOverview = null;

  @JsonProperty("tenantId")
  private String tenantId = null;

  @JsonProperty("url")
  private String url = null;

  @JsonProperty("caseInstanceUrl")
  private String caseInstanceUrl = null;

  @JsonProperty("caseDefinitionUrl")
  private String caseDefinitionUrl = null;

  @JsonProperty("derivedCaseDefinitionUrl")
  private String derivedCaseDefinitionUrl = null;

  @JsonProperty("stageInstanceUrl")
  private String stageInstanceUrl = null;

  public HistoricPlanItemInstanceResponse id(String id) {
    this.id = id;
    return this;
  }

   /**
   * Get id
   * @return id
  **/
  @ApiModelProperty(example = "5", value = "")
  public String getId() {
    return id;
  }

  public void setId(String id) {
    this.id = id;
  }

  public HistoricPlanItemInstanceResponse name(String name) {
    this.name = name;
    return this;
  }

   /**
   * Get name
   * @return name
  **/
  @ApiModelProperty(example = "myPlanItemName", value = "")
  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public HistoricPlanItemInstanceResponse state(String state) {
    this.state = state;
    return this;
  }

   /**
   * Get state
   * @return state
  **/
  @ApiModelProperty(example = "completed", value = "")
  public String getState() {
    return state;
  }

  public void setState(String state) {
    this.state = state;
  }

  public HistoricPlanItemInstanceResponse caseDefinitionId(String caseDefinitionId) {
    this.caseDefinitionId = caseDefinitionId;
    return this;
  }

   /**
   * Get caseDefinitionId
   * @return caseDefinitionId
  **/
  @ApiModelProperty(example = "myCaseId%3A1%3A4", value = "")
  public String getCaseDefinitionId() {
    return caseDefinitionId;
  }

  public void setCaseDefinitionId(String caseDefinitionId) {
    this.caseDefinitionId = caseDefinitionId;
  }

  public HistoricPlanItemInstanceResponse derivedCaseDefinitionId(String derivedCaseDefinitionId) {
    this.derivedCaseDefinitionId = derivedCaseDefinitionId;
    return this;
  }

   /**
   * Get derivedCaseDefinitionId
   * @return derivedCaseDefinitionId
  **/
  @ApiModelProperty(value = "")
  public String getDerivedCaseDefinitionId() {
    return derivedCaseDefinitionId;
  }

  public void setDerivedCaseDefinitionId(String derivedCaseDefinitionId) {
    this.derivedCaseDefinitionId = derivedCaseDefinitionId;
  }

  public HistoricPlanItemInstanceResponse caseInstanceId(String caseInstanceId) {
    this.caseInstanceId = caseInstanceId;
    return this;
  }

   /**
   * Get caseInstanceId
   * @return caseInstanceId
  **/
  @ApiModelProperty(example = "12345", value = "")
  public String getCaseInstanceId() {
    return caseInstanceId;
  }

  public void setCaseInstanceId(String caseInstanceId) {
    this.caseInstanceId = caseInstanceId;
  }

  public HistoricPlanItemInstanceResponse stageInstanceId(String stageInstanceId) {
    this.stageInstanceId = stageInstanceId;
    return this;
  }

   /**
   * Get stageInstanceId
   * @return stageInstanceId
  **/
  @ApiModelProperty(example = "stageId", value = "")
  public String getStageInstanceId() {
    return stageInstanceId;
  }

  public void setStageInstanceId(String stageInstanceId) {
    this.stageInstanceId = stageInstanceId;
  }

  public HistoricPlanItemInstanceResponse stage(Boolean stage) {
    this.stage = stage;
    return this;
  }

   /**
   * Get stage
   * @return stage
  **/
  @ApiModelProperty(example = "true", value = "")
  public Boolean getStage() {
    return stage;
  }

  public void setStage(Boolean stage) {
    this.stage = stage;
  }

  public HistoricPlanItemInstanceResponse elementId(String elementId) {
    this.elementId = elementId;
    return this;
  }

   /**
   * Get elementId
   * @return elementId
  **/
  @ApiModelProperty(example = "someElementId", value = "")
  public String getElementId() {
    return elementId;
  }

  public void setElementId(String elementId) {
    this.elementId = elementId;
  }

  public HistoricPlanItemInstanceResponse planItemDefinitionId(String planItemDefinitionId) {
    this.planItemDefinitionId = planItemDefinitionId;
    return this;
  }

   /**
   * Get planItemDefinitionId
   * @return planItemDefinitionId
  **/
  @ApiModelProperty(example = "someId", value = "")
  public String getPlanItemDefinitionId() {
    return planItemDefinitionId;
  }

  public void setPlanItemDefinitionId(String planItemDefinitionId) {
    this.planItemDefinitionId = planItemDefinitionId;
  }

  public HistoricPlanItemInstanceResponse planItemDefinitionType(String planItemDefinitionType) {
    this.planItemDefinitionType = planItemDefinitionType;
    return this;
  }

   /**
   * Get planItemDefinitionType
   * @return planItemDefinitionType
  **/
  @ApiModelProperty(example = "timerEventListener", value = "")
  public String getPlanItemDefinitionType() {
    return planItemDefinitionType;
  }

  public void setPlanItemDefinitionType(String planItemDefinitionType) {
    this.planItemDefinitionType = planItemDefinitionType;
  }

  public HistoricPlanItemInstanceResponse createTime(OffsetDateTime createTime) {
    this.createTime = createTime;
    return this;
  }

   /**
   * Get createTime
   * @return createTime
  **/
  @ApiModelProperty(example = "2013-04-17T10:17:43.902+0000", value = "")
  public OffsetDateTime getCreateTime() {
    return createTime;
  }

  public void setCreateTime(OffsetDateTime createTime) {
    this.createTime = createTime;
  }

  public HistoricPlanItemInstanceResponse lastAvailableTime(OffsetDateTime lastAvailableTime) {
    this.lastAvailableTime = lastAvailableTime;
    return this;
  }

   /**
   * Get lastAvailableTime
   * @return lastAvailableTime
  **/
  @ApiModelProperty(example = "2013-04-17T10:17:43.902+0000", value = "")
  public OffsetDateTime getLastAvailableTime() {
    return lastAvailableTime;
  }

  public void setLastAvailableTime(OffsetDateTime lastAvailableTime) {
    this.lastAvailableTime = lastAvailableTime;
  }

  public HistoricPlanItemInstanceResponse lastEnabledTime(OffsetDateTime lastEnabledTime) {
    this.lastEnabledTime = lastEnabledTime;
    return this;
  }

   /**
   * Get lastEnabledTime
   * @return lastEnabledTime
  **/
  @ApiModelProperty(example = "2013-04-17T10:17:43.902+0000", value = "")
  public OffsetDateTime getLastEnabledTime() {
    return lastEnabledTime;
  }

  public void setLastEnabledTime(OffsetDateTime lastEnabledTime) {
    this.lastEnabledTime = lastEnabledTime;
  }

  public HistoricPlanItemInstanceResponse lastDisabledTime(OffsetDateTime lastDisabledTime) {
    this.lastDisabledTime = lastDisabledTime;
    return this;
  }

   /**
   * Get lastDisabledTime
   * @return lastDisabledTime
  **/
  @ApiModelProperty(example = "2013-04-17T10:17:43.902+0000", value = "")
  public OffsetDateTime getLastDisabledTime() {
    return lastDisabledTime;
  }

  public void setLastDisabledTime(OffsetDateTime lastDisabledTime) {
    this.lastDisabledTime = lastDisabledTime;
  }

  public HistoricPlanItemInstanceResponse lastStartedTime(OffsetDateTime lastStartedTime) {
    this.lastStartedTime = lastStartedTime;
    return this;
  }

   /**
   * Get lastStartedTime
   * @return lastStartedTime
  **/
  @ApiModelProperty(example = "2013-04-17T10:17:43.902+0000", value = "")
  public OffsetDateTime getLastStartedTime() {
    return lastStartedTime;
  }

  public void setLastStartedTime(OffsetDateTime lastStartedTime) {
    this.lastStartedTime = lastStartedTime;
  }

  public HistoricPlanItemInstanceResponse lastSuspendedTime(OffsetDateTime lastSuspendedTime) {
    this.lastSuspendedTime = lastSuspendedTime;
    return this;
  }

   /**
   * Get lastSuspendedTime
   * @return lastSuspendedTime
  **/
  @ApiModelProperty(example = "2013-04-17T10:17:43.902+0000", value = "")
  public OffsetDateTime getLastSuspendedTime() {
    return lastSuspendedTime;
  }

  public void setLastSuspendedTime(OffsetDateTime lastSuspendedTime) {
    this.lastSuspendedTime = lastSuspendedTime;
  }

  public HistoricPlanItemInstanceResponse completedTime(OffsetDateTime completedTime) {
    this.completedTime = completedTime;
    return this;
  }

   /**
   * Get completedTime
   * @return completedTime
  **/
  @ApiModelProperty(example = "2013-04-17T10:17:43.902+0000", value = "")
  public OffsetDateTime getCompletedTime() {
    return completedTime;
  }

  public void setCompletedTime(OffsetDateTime completedTime) {
    this.completedTime = completedTime;
  }

  public HistoricPlanItemInstanceResponse occurredTime(OffsetDateTime occurredTime) {
    this.occurredTime = occurredTime;
    return this;
  }

   /**
   * Get occurredTime
   * @return occurredTime
  **/
  @ApiModelProperty(example = "2013-04-17T10:17:43.902+0000", value = "")
  public OffsetDateTime getOccurredTime() {
    return occurredTime;
  }

  public void setOccurredTime(OffsetDateTime occurredTime) {
    this.occurredTime = occurredTime;
  }

  public HistoricPlanItemInstanceResponse terminatedTime(OffsetDateTime terminatedTime) {
    this.terminatedTime = terminatedTime;
    return this;
  }

   /**
   * Get terminatedTime
   * @return terminatedTime
  **/
  @ApiModelProperty(example = "2013-04-17T10:17:43.902+0000", value = "")
  public OffsetDateTime getTerminatedTime() {
    return terminatedTime;
  }

  public void setTerminatedTime(OffsetDateTime terminatedTime) {
    this.terminatedTime = terminatedTime;
  }

  public HistoricPlanItemInstanceResponse exitTime(OffsetDateTime exitTime) {
    this.exitTime = exitTime;
    return this;
  }

   /**
   * Get exitTime
   * @return exitTime
  **/
  @ApiModelProperty(example = "2013-04-17T10:17:43.902+0000", value = "")
  public OffsetDateTime getExitTime() {
    return exitTime;
  }

  public void setExitTime(OffsetDateTime exitTime) {
    this.exitTime = exitTime;
  }

  public HistoricPlanItemInstanceResponse endedTime(OffsetDateTime endedTime) {
    this.endedTime = endedTime;
    return this;
  }

   /**
   * Get endedTime
   * @return endedTime
  **/
  @ApiModelProperty(example = "2013-04-17T10:17:43.902+0000", value = "")
  public OffsetDateTime getEndedTime() {
    return endedTime;
  }

  public void setEndedTime(OffsetDateTime endedTime) {
    this.endedTime = endedTime;
  }

  public HistoricPlanItemInstanceResponse lastUpdatedTime(OffsetDateTime lastUpdatedTime) {
    this.lastUpdatedTime = lastUpdatedTime;
    return this;
  }

   /**
   * Get lastUpdatedTime
   * @return lastUpdatedTime
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getLastUpdatedTime() {
    return lastUpdatedTime;
  }

  public void setLastUpdatedTime(OffsetDateTime lastUpdatedTime) {
    this.lastUpdatedTime = lastUpdatedTime;
  }

  public HistoricPlanItemInstanceResponse startUserId(String startUserId) {
    this.startUserId = startUserId;
    return this;
  }

   /**
   * Get startUserId
   * @return startUserId
  **/
  @ApiModelProperty(example = "kermit", value = "")
  public String getStartUserId() {
    return startUserId;
  }

  public void setStartUserId(String startUserId) {
    this.startUserId = startUserId;
  }

  public HistoricPlanItemInstanceResponse referenceId(String referenceId) {
    this.referenceId = referenceId;
    return this;
  }

   /**
   * Get referenceId
   * @return referenceId
  **/
  @ApiModelProperty(example = "referenceId", value = "")
  public String getReferenceId() {
    return referenceId;
  }

  public void setReferenceId(String referenceId) {
    this.referenceId = referenceId;
  }

  public HistoricPlanItemInstanceResponse referenceType(String referenceType) {
    this.referenceType = referenceType;
    return this;
  }

   /**
   * Get referenceType
   * @return referenceType
  **/
  @ApiModelProperty(example = "referenceType", value = "")
  public String getReferenceType() {
    return referenceType;
  }

  public void setReferenceType(String referenceType) {
    this.referenceType = referenceType;
  }

  public HistoricPlanItemInstanceResponse entryCriterionId(String entryCriterionId) {
    this.entryCriterionId = entryCriterionId;
    return this;
  }

   /**
   * Get entryCriterionId
   * @return entryCriterionId
  **/
  @ApiModelProperty(value = "")
  public String getEntryCriterionId() {
    return entryCriterionId;
  }

  public void setEntryCriterionId(String entryCriterionId) {
    this.entryCriterionId = entryCriterionId;
  }

  public HistoricPlanItemInstanceResponse exitCriterionId(String exitCriterionId) {
    this.exitCriterionId = exitCriterionId;
    return this;
  }

   /**
   * Get exitCriterionId
   * @return exitCriterionId
  **/
  @ApiModelProperty(value = "")
  public String getExitCriterionId() {
    return exitCriterionId;
  }

  public void setExitCriterionId(String exitCriterionId) {
    this.exitCriterionId = exitCriterionId;
  }

  public HistoricPlanItemInstanceResponse formKey(String formKey) {
    this.formKey = formKey;
    return this;
  }

   /**
   * Get formKey
   * @return formKey
  **/
  @ApiModelProperty(value = "")
  public String getFormKey() {
    return formKey;
  }

  public void setFormKey(String formKey) {
    this.formKey = formKey;
  }

  public HistoricPlanItemInstanceResponse extraValue(String extraValue) {
    this.extraValue = extraValue;
    return this;
  }

   /**
   * Get extraValue
   * @return extraValue
  **/
  @ApiModelProperty(value = "")
  public String getExtraValue() {
    return extraValue;
  }

  public void setExtraValue(String extraValue) {
    this.extraValue = extraValue;
  }

  public HistoricPlanItemInstanceResponse showInOverview(Boolean showInOverview) {
    this.showInOverview = showInOverview;
    return this;
  }

   /**
   * Get showInOverview
   * @return showInOverview
  **/
  @ApiModelProperty(value = "")
  public Boolean getShowInOverview() {
    return showInOverview;
  }

  public void setShowInOverview(Boolean showInOverview) {
    this.showInOverview = showInOverview;
  }

  public HistoricPlanItemInstanceResponse tenantId(String tenantId) {
    this.tenantId = tenantId;
    return this;
  }

   /**
   * Get tenantId
   * @return tenantId
  **/
  @ApiModelProperty(value = "")
  public String getTenantId() {
    return tenantId;
  }

  public void setTenantId(String tenantId) {
    this.tenantId = tenantId;
  }

  public HistoricPlanItemInstanceResponse url(String url) {
    this.url = url;
    return this;
  }

   /**
   * Get url
   * @return url
  **/
  @ApiModelProperty(example = "http://localhost:8182/cmmn-history/historic-planitem-instances/5", value = "")
  public String getUrl() {
    return url;
  }

  public void setUrl(String url) {
    this.url = url;
  }

  public HistoricPlanItemInstanceResponse caseInstanceUrl(String caseInstanceUrl) {
    this.caseInstanceUrl = caseInstanceUrl;
    return this;
  }

   /**
   * Get caseInstanceUrl
   * @return caseInstanceUrl
  **/
  @ApiModelProperty(example = "http://localhost:8182/cmmn-history/historic-case-instances/12345", value = "")
  public String getCaseInstanceUrl() {
    return caseInstanceUrl;
  }

  public void setCaseInstanceUrl(String caseInstanceUrl) {
    this.caseInstanceUrl = caseInstanceUrl;
  }

  public HistoricPlanItemInstanceResponse caseDefinitionUrl(String caseDefinitionUrl) {
    this.caseDefinitionUrl = caseDefinitionUrl;
    return this;
  }

   /**
   * Get caseDefinitionUrl
   * @return caseDefinitionUrl
  **/
  @ApiModelProperty(example = "http://localhost:8182/cmmn-repository/case-definitions/myCaseId%3A1%3A4", value = "")
  public String getCaseDefinitionUrl() {
    return caseDefinitionUrl;
  }

  public void setCaseDefinitionUrl(String caseDefinitionUrl) {
    this.caseDefinitionUrl = caseDefinitionUrl;
  }

  public HistoricPlanItemInstanceResponse derivedCaseDefinitionUrl(String derivedCaseDefinitionUrl) {
    this.derivedCaseDefinitionUrl = derivedCaseDefinitionUrl;
    return this;
  }

   /**
   * Get derivedCaseDefinitionUrl
   * @return derivedCaseDefinitionUrl
  **/
  @ApiModelProperty(value = "")
  public String getDerivedCaseDefinitionUrl() {
    return derivedCaseDefinitionUrl;
  }

  public void setDerivedCaseDefinitionUrl(String derivedCaseDefinitionUrl) {
    this.derivedCaseDefinitionUrl = derivedCaseDefinitionUrl;
  }

  public HistoricPlanItemInstanceResponse stageInstanceUrl(String stageInstanceUrl) {
    this.stageInstanceUrl = stageInstanceUrl;
    return this;
  }

   /**
   * Get stageInstanceUrl
   * @return stageInstanceUrl
  **/
  @ApiModelProperty(value = "")
  public String getStageInstanceUrl() {
    return stageInstanceUrl;
  }

  public void setStageInstanceUrl(String stageInstanceUrl) {
    this.stageInstanceUrl = stageInstanceUrl;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    HistoricPlanItemInstanceResponse historicPlanItemInstanceResponse = (HistoricPlanItemInstanceResponse) o;
    return Objects.equals(this.id, historicPlanItemInstanceResponse.id) &&
        Objects.equals(this.name, historicPlanItemInstanceResponse.name) &&
        Objects.equals(this.state, historicPlanItemInstanceResponse.state) &&
        Objects.equals(this.caseDefinitionId, historicPlanItemInstanceResponse.caseDefinitionId) &&
        Objects.equals(this.derivedCaseDefinitionId, historicPlanItemInstanceResponse.derivedCaseDefinitionId) &&
        Objects.equals(this.caseInstanceId, historicPlanItemInstanceResponse.caseInstanceId) &&
        Objects.equals(this.stageInstanceId, historicPlanItemInstanceResponse.stageInstanceId) &&
        Objects.equals(this.stage, historicPlanItemInstanceResponse.stage) &&
        Objects.equals(this.elementId, historicPlanItemInstanceResponse.elementId) &&
        Objects.equals(this.planItemDefinitionId, historicPlanItemInstanceResponse.planItemDefinitionId) &&
        Objects.equals(this.planItemDefinitionType, historicPlanItemInstanceResponse.planItemDefinitionType) &&
        Objects.equals(this.createTime, historicPlanItemInstanceResponse.createTime) &&
        Objects.equals(this.lastAvailableTime, historicPlanItemInstanceResponse.lastAvailableTime) &&
        Objects.equals(this.lastEnabledTime, historicPlanItemInstanceResponse.lastEnabledTime) &&
        Objects.equals(this.lastDisabledTime, historicPlanItemInstanceResponse.lastDisabledTime) &&
        Objects.equals(this.lastStartedTime, historicPlanItemInstanceResponse.lastStartedTime) &&
        Objects.equals(this.lastSuspendedTime, historicPlanItemInstanceResponse.lastSuspendedTime) &&
        Objects.equals(this.completedTime, historicPlanItemInstanceResponse.completedTime) &&
        Objects.equals(this.occurredTime, historicPlanItemInstanceResponse.occurredTime) &&
        Objects.equals(this.terminatedTime, historicPlanItemInstanceResponse.terminatedTime) &&
        Objects.equals(this.exitTime, historicPlanItemInstanceResponse.exitTime) &&
        Objects.equals(this.endedTime, historicPlanItemInstanceResponse.endedTime) &&
        Objects.equals(this.lastUpdatedTime, historicPlanItemInstanceResponse.lastUpdatedTime) &&
        Objects.equals(this.startUserId, historicPlanItemInstanceResponse.startUserId) &&
        Objects.equals(this.referenceId, historicPlanItemInstanceResponse.referenceId) &&
        Objects.equals(this.referenceType, historicPlanItemInstanceResponse.referenceType) &&
        Objects.equals(this.entryCriterionId, historicPlanItemInstanceResponse.entryCriterionId) &&
        Objects.equals(this.exitCriterionId, historicPlanItemInstanceResponse.exitCriterionId) &&
        Objects.equals(this.formKey, historicPlanItemInstanceResponse.formKey) &&
        Objects.equals(this.extraValue, historicPlanItemInstanceResponse.extraValue) &&
        Objects.equals(this.showInOverview, historicPlanItemInstanceResponse.showInOverview) &&
        Objects.equals(this.tenantId, historicPlanItemInstanceResponse.tenantId) &&
        Objects.equals(this.url, historicPlanItemInstanceResponse.url) &&
        Objects.equals(this.caseInstanceUrl, historicPlanItemInstanceResponse.caseInstanceUrl) &&
        Objects.equals(this.caseDefinitionUrl, historicPlanItemInstanceResponse.caseDefinitionUrl) &&
        Objects.equals(this.derivedCaseDefinitionUrl, historicPlanItemInstanceResponse.derivedCaseDefinitionUrl) &&
        Objects.equals(this.stageInstanceUrl, historicPlanItemInstanceResponse.stageInstanceUrl);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, name, state, caseDefinitionId, derivedCaseDefinitionId, caseInstanceId, stageInstanceId, stage, elementId, planItemDefinitionId, planItemDefinitionType, createTime, lastAvailableTime, lastEnabledTime, lastDisabledTime, lastStartedTime, lastSuspendedTime, completedTime, occurredTime, terminatedTime, exitTime, endedTime, lastUpdatedTime, startUserId, referenceId, referenceType, entryCriterionId, exitCriterionId, formKey, extraValue, showInOverview, tenantId, url, caseInstanceUrl, caseDefinitionUrl, derivedCaseDefinitionUrl, stageInstanceUrl);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class HistoricPlanItemInstanceResponse {\n");

    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    state: ").append(toIndentedString(state)).append("\n");
    sb.append("    caseDefinitionId: ").append(toIndentedString(caseDefinitionId)).append("\n");
    sb.append("    derivedCaseDefinitionId: ").append(toIndentedString(derivedCaseDefinitionId)).append("\n");
    sb.append("    caseInstanceId: ").append(toIndentedString(caseInstanceId)).append("\n");
    sb.append("    stageInstanceId: ").append(toIndentedString(stageInstanceId)).append("\n");
    sb.append("    stage: ").append(toIndentedString(stage)).append("\n");
    sb.append("    elementId: ").append(toIndentedString(elementId)).append("\n");
    sb.append("    planItemDefinitionId: ").append(toIndentedString(planItemDefinitionId)).append("\n");
    sb.append("    planItemDefinitionType: ").append(toIndentedString(planItemDefinitionType)).append("\n");
    sb.append("    createTime: ").append(toIndentedString(createTime)).append("\n");
    sb.append("    lastAvailableTime: ").append(toIndentedString(lastAvailableTime)).append("\n");
    sb.append("    lastEnabledTime: ").append(toIndentedString(lastEnabledTime)).append("\n");
    sb.append("    lastDisabledTime: ").append(toIndentedString(lastDisabledTime)).append("\n");
    sb.append("    lastStartedTime: ").append(toIndentedString(lastStartedTime)).append("\n");
    sb.append("    lastSuspendedTime: ").append(toIndentedString(lastSuspendedTime)).append("\n");
    sb.append("    completedTime: ").append(toIndentedString(completedTime)).append("\n");
    sb.append("    occurredTime: ").append(toIndentedString(occurredTime)).append("\n");
    sb.append("    terminatedTime: ").append(toIndentedString(terminatedTime)).append("\n");
    sb.append("    exitTime: ").append(toIndentedString(exitTime)).append("\n");
    sb.append("    endedTime: ").append(toIndentedString(endedTime)).append("\n");
    sb.append("    lastUpdatedTime: ").append(toIndentedString(lastUpdatedTime)).append("\n");
    sb.append("    startUserId: ").append(toIndentedString(startUserId)).append("\n");
    sb.append("    referenceId: ").append(toIndentedString(referenceId)).append("\n");
    sb.append("    referenceType: ").append(toIndentedString(referenceType)).append("\n");
    sb.append("    entryCriterionId: ").append(toIndentedString(entryCriterionId)).append("\n");
    sb.append("    exitCriterionId: ").append(toIndentedString(exitCriterionId)).append("\n");
    sb.append("    formKey: ").append(toIndentedString(formKey)).append("\n");
    sb.append("    extraValue: ").append(toIndentedString(extraValue)).append("\n");
    sb.append("    showInOverview: ").append(toIndentedString(showInOverview)).append("\n");
    sb.append("    tenantId: ").append(toIndentedString(tenantId)).append("\n");
    sb.append("    url: ").append(toIndentedString(url)).append("\n");
    sb.append("    caseInstanceUrl: ").append(toIndentedString(caseInstanceUrl)).append("\n");
    sb.append("    caseDefinitionUrl: ").append(toIndentedString(caseDefinitionUrl)).append("\n");
    sb.append("    derivedCaseDefinitionUrl: ").append(toIndentedString(derivedCaseDefinitionUrl)).append("\n");
    sb.append("    stageInstanceUrl: ").append(toIndentedString(stageInstanceUrl)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(java.lang.Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }

}
